package com.ok.runnable;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.ok.constant.JmQueue;
import com.ok.constant.WsEventEnum;
import com.ok.event.WsEventManage;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;

import java.util.concurrent.TimeUnit;

/**
 * 监测点数据变动处理
 */
@Slf4j
@Data
public class PointRDataChangeRunnable extends AbstractRunable {
    //增加对生产管理系统中产线数据处理的逻辑，添加产线处理开关，通过yml配置
    public boolean mesEnable = false;

    @Override
    public void run() {
        while (this.run) {
            try {
                JSONObject obj = JmQueue.pointRDataChangeBQ.poll(2, TimeUnit.SECONDS);
                if (obj != null) {
                    String objString = JSON.toJSONString(obj);
                    WsEventManage.notifyWsEvent(WsEventEnum.pointRDataChange.getCode(), null, objString);
                    //2024/12/13 监测点数据变化后，需要处理开关机事件，记录停机时长，实现设备稼动率的计算
                    //增加一个处理所有mes产线相关的一个事件
                    WsEventManage.notifyMesDataChangeEvent(WsEventEnum.mesPintRDataChange.getCode(), objString);
                    //2024/12/13 监测点数据变化后，需要处理开关机事件，记录停机时长，实现设备稼动率的计算
                }
            } catch (Exception e) {
                log.error("监测点数据变动处理异常:", e);
            } catch (Throwable e) {
                log.error("监测点数据变动处理崩溃", e);
                throw e;
            }
        }
    }
}
